package com.panshi.hujin2.httpcrawler.domain.bank;

import com.panshi.hujin2.httpcrawler.util.DateUtil;

import java.util.Date;

/**
 * 爬虫账单实体转换工具
 * @Author: wangxl
 * @Date: 2018/11/27 13:13
 */
public class CrawlerBillDoUtil {
    /**
     *
     * @param creditCardBillDo
     * @return
     */
    public static CreditAccountBillDO convert(CreditCardBillDo creditCardBillDo){
        CreditAccountBillDO creditAccountBillDo = new CreditAccountBillDO();
        //出账金额
        creditAccountBillDo.setOutAccountMoney(creditCardBillDo.getAccountAmount());
        //还款金额（用户还款时插入）
        creditAccountBillDo.setRepaymentMoney(null);
        //出账日期
        creditAccountBillDo.setOutAccountDate(creditCardBillDo.getAccountDate());
        //还款日期（用户还款时插入）
        creditAccountBillDo.setRepaymentDate(null);
        //预还款日期
        creditAccountBillDo.setForecastRepaymentDate(creditCardBillDo.getDueDate());
        //账期
        creditAccountBillDo.setCurrentPeriod(creditCardBillDo.getAccountPeriod());
        //状态（-1未出账，0 待还款， 1已还清， 2 部分还款 ，3 逾期未出账，4 逾期已出账）
        creditAccountBillDo.setStatus(0);//0 待还款
        Date currentDate = DateUtil.getNow();
        Date dueDate= creditCardBillDo.getDueDate();
        if(currentDate.after(dueDate)){
            //4 逾期已出账
            creditAccountBillDo.setStatus(4);
            //已经逾期天数
            int days = DateUtil.differDayQty(dueDate,currentDate);
            if(days>0){
                creditAccountBillDo.setDueDays(days);
            }
        }
        //判断当前账单是否是本月账单，如果不是本月账单则设置账单状态为已结清
        int year = currentDate.getYear();
        int month = currentDate.getMonth();
        int currentPeriod = year * 100 + month;
        if(currentPeriod > creditAccountBillDo.getCurrentPeriod()){
            creditAccountBillDo.setStatus(1);//1 已还清
        }

        //uccid
        //逾期提醒状态（0初始值 1准备发送 2已发送）
        creditAccountBillDo.setDueMessageStatus(0);
        //出账消息提醒状态（0初始值 1准备发送 2已发送）
        creditAccountBillDo.setOutMessageStatus(0);
        //转入下期消息状态（0 初始值，1待发送，2已发送）
        creditAccountBillDo.setSwitchNextMessageStatus(0);
        //创建日期
        creditAccountBillDo.setCreateTime(currentDate);
        //邮件接收日期
        creditAccountBillDo.setEmailReceiveDate(creditCardBillDo.getEmailReceiveDate());
        //cpf
        creditAccountBillDo.setCpf(creditCardBillDo.getCpf());
        //信用卡 卡号
        creditAccountBillDo.setCardId(creditCardBillDo.getCardId());

        return creditAccountBillDo;
    }
}
